RubyKaigi 2023: Build Your Own SQLite3
SQLite3
Public domain
Single-file db
Embedded SQLite3 in
カーナビ
iOS Androidアプリ
Webアプリ
マスターデータ
ブラウザー
Google Chrome
wasm
マイコン
Target device and OS
RP2040
Bara metal
PicoRuby
developed by hasumikin
monsterlab
PicoRuby
マイコン上で動くシェル環境
irbを起動
SQLite3をソースからビルドする
オプションが異常に多い
Linux, Windowsではない場合、SQLITE_OS_OTHERというオプションの明示的な指定が必要
SQLITE_OS_OTHERを指定した場合、sqlite3_os_initを呼んであげる
sqlite3_open_v2という関数が呼ばれる
Cのopenが呼ばれる
Linuxの場合はシステムコール
そうではない場合はSQLite3においてVFSと呼ばれるものを実装してあげる必要がある
VFSのstructたち
sqlite3_mem_methods
sqlite3_vfs
sqlite3_io_methods
sqlite3_file
SQLite3のCのコードの中で(実行時に)PicoRuby? mruby?のメソッドが呼ばれている
prb_file_new
prb_file_read
prb_funcall
SQLite3.vfs_methods = File::VFS.vfs_methods
SQLite3のAPIをいじくりまわしてRubyを呼ぶようにしているyuiseki.icon
自作キーボード
RP2040がベースで、SDカードが付いている
PicoRubyで動いている
SQLite3でキーロガーを作っている
キーアサインの最適化に使える
左右分割キーボード
最も良く押されているキーを左右に等しく配置すると速く入力できるはず
hjklが最も良く押されている
vimmerだから…